package com.njtech.pet.dao;

import com.njtech.pet.entity.Bill;
import com.njtech.pet.entity.Item;
import com.njtech.pet.entity.User;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Author:lxj
 * Date:2020-03-09 17:04
 * Description:账单数据
 */
public interface BillDao {

    /**
     * 插入
     * @param bill 新的记录
     * @return 修改行数
     */
    int insert(Bill bill);

    /**
     * 修改
     * @param bill 新纪录
     * @return 行数
     */
    int updateByBillId(Bill bill);

    /**
     * 根据用户、状态、类型查找对应账单
     * @param user 谁
     * @param state 订单状态
     * @param type 订单类型
     * @param beginDate 起日期
     * @param endDate 止日期
     * @return 订单集合
     */
    List<Bill> selectByUser(@Param("user")User user,
                            @Param("billState")String state,
                            @Param("billType")String type,
                            @Param("beginDate")String beginDate,
                            @Param("endDate") String endDate);

    /**
     * 根据Bill Id 查找bill
     * @return result
     */
    Bill selectByBillId(@Param("id")Integer id);

    /**
     * 根据用户、优惠券、优惠券状态查找对应账单
     * @param user 使用者
     * @param coupon 所使用的优惠券
     * @param state 优惠券状态
     * @return 相应订单
     */
    List<Bill> selectByUserAndCoupon(@Param("user")User user,
                               @Param("coupon") Item coupon,
                               @Param("billState")String state);
}
